/* This file is part of Project MAXS. MAXS and its modules is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. MAXS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with MAXS. If not, see <http://www.gnu.org/licenses/>. */ package org.projectmaxs.transport.xmpp.activities; import android.view.KeyEvent; import android.view.View; import android.view.View.OnFocusChangeListener; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.TextView; public abstract class EditTextWatcher implements OnFocusChangeListener, TextView.OnEditorActionListener { protected final EditText mEditText; protected String mBeforeText; private boolean mInUse = false; public EditTextWatcher(EditText editText) { mEditText = editText; editText.setOnFocusChangeListener(this); editText.setOnEditorActionListener(this); } @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { inFocus(v); } else { maybeCallLostFocusOrDone(v); } } @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { switch (actionId) { // Enter key pressed case EditorInfo.IME_NULL: case EditorInfo.IME_ACTION_DONE: case EditorInfo.IME_ACTION_GO: case EditorInfo.IME_ACTION_NEXT: maybeCallLostFocusOrDone(v); break; default: break; } return false; } public void inFocus(View v) { mInUse = true; mBeforeText = mEditText.getText().toString(); } public void onPause() { lostFocusOrDone(mEditText); } public abstract void lostFocusOrDone(View v); private void maybeCallLostFocusOrDone(View v) { if (mInUse) lostFocusOrDone(v); mInUse = false; } }